﻿
namespace System.Management.HyperV
{
    /// <summary>
    /// Indicates the enabled and disabled states of an element. It can also indicate the transitions between these requested states. For example, shutting down (value=4) and starting (value=10) are transient states between enabled and disabled.
    /// </summary>
    /// <remarks>http://msdn.microsoft.com/en-us/library/cc136818(VS.85).aspx</remarks>
    public enum EnabledStateOption : ushort
    {
        Unknown = 0,
        Other = 1,
        /// <summary>
        /// The element is or could be executing commands, will process any queued commands, and queues new requests.
        /// </summary>
        Enabled = 2,
        /// <summary>
        /// The element will not execute commands and will drop any new requests.
        /// </summary>
        Disabled = 3,
        /// <summary>
        /// The element is in the process of going to a Disabled state.
        /// </summary>
        ShuttingDown = 4,
        /// <summary>
        /// The element does not support being enabled or disabled.
        /// </summary>
        NotApplicable = 5,
        /// <summary>
        /// The element might be completing commands, and will drop any new requests.
        /// </summary>
        EnabledButOffline = 6,
        /// <summary>
        /// The element is in a test state.
        /// </summary>
        InTest = 7,
        /// <summary>
        /// The element might be completing commands, but will queue any new requests.
        /// </summary>
        Deferred = 8,
        /// <summary>
        /// The element is enabled but in a restricted mode. The behavior of the element is similar to the Enabled state (2), but it processes only a restricted set of commands. All other requests are queued.
        /// </summary>
        Quiesce = 9,
        /// <summary>
        /// The element is in the process of going to an Enabled state (2). New requests are queued.
        /// </summary>
        Starting = 10
    }
}
